package metodosInterpoladores;


import java.awt.geom.Point2D;
import java.util.List;

import funciones.FuncionX;


/**
 * <p>Esta clase sirve como punto de acceso a la libreria para interpoladores.</p>
 * 
 * Al tener los distintos interpoladores grupados,
 * queda simplificado el uso de las clases de interpolacion.
 * <br>
 * <center>
 * <img src="../../resources/interpoladores.png" > <br>
 * </center>
 */

public class Interpoladores {

	/**
	 * Concepto : 
	 * Interpolar significa encontrar un valor intermedio entre dos o mas puntos base conocidos, 
	 * los cuales se pueden aproximar mediante polinomios.
	 * 
     * Objetivo:
     * Interpolar la funcion utilizando la interpolacion lineal
     * @param points Set de puntos a usarse para la interpolacion
     * @return Funcion generada por la interpolacion
     */
	public static FuncionX interpolarLinealmente(final List<Point2D.Double> points){
		return InterpolacionLineal.interpolate(points);
	}
	
	/**
     * Objetivo:
     * Interpolar la funcion utilizando la interpolacion de Newton
     * @param points Set de puntos a usarse para la interpolacion
     * @return Funcion generada por la interpolacion
     */
	public static FuncionX interpolarNewton(final List<Point2D.Double> points){
		return InterpolacionNewton.interpolate(points);
	}
	
	/**
	 * Objetivo:
     * Interpolar la funcion utilizando Spline Cubica Natural
     * @param points Set de puntos a usarse para la interpolacion
     * @return Funcion generada por la interpolacion
     */
	public static FuncionX splineCubica(final List<Point2D.Double> points){
		return SplineCubica.interpolate(points);
	}
}
